1. Field of the Invention
The present invention relates to a computer aided tool for analyzing a computer program and more particularly, to a method for extracting, converting and displaying complex software data structures located within existing computer programs.
2. Description of the Prior Art
As those skilled in the art well know, computer or software programs are rarely created in a single session. Often, many rewrites of a program are needed to get it to operate as desired. Additionally, complex or large scale programs are often written by more than one author and contain millions of lines of source code. This source code represents the complete architecture and functionality of the program.
After a software program has been certified or approved, it is deployed as a component part of a system. Thereafter, it needs to be maintained and upgraded during the life of the system. Life cycle deployments of both a program and a system can exceed twenty years.
Computer programmers that are tasked with the maintenance and upgrading of these systems often must rely on paper documentation that is in some cases decades old. Given the extremely large size of deployed software systems, documentation limitations can place great demands on the resources of a software maintenance organization. More specifically, current maintenance programming environments typically face the following problems. There are instances where the documentation for the software system is non-existent or misleading. Programmers must locate language constructs, such as data structures, from literally millions of lines of code, before they can debug and perform program maintenance. These problems force programmers to have years of direct experience with the particular software system being maintained to exhibit any appreciable efficiency.
A variety of tools have been developed to assist programmers in finding and debugging errors in computer programs and in understanding the structure of such programs. U.S. Pat. No. 5,029,170 to Hansen, for example, illustrates a tool for identifying potential Assembly language source code errors resulting from incorrectly used symbolic and literal address constructs. The tool comprises a debugging program which has an awareness of the specific machine interfaces, conventions and symbol sets. By essentially stepping through the Assembly language statements, the debugging program is able to identify, in the Assembly language program under study, specific instances of the use of statements containing possibly incorrect symbolic or literal address constructs and to run closely related additional tests. The programmer can then examine the denoted Assembly language code to determine if a genuine error exists. Use of this debugging program however requires execution of the computer program during analysis.
U.S. Pat. No. 4,730,315 to Saito et al. illustrates a tool for testing a program in a data processing system equipped with a display terminal for interactive operations. Program specification inputs are given in a diagrammatic form through interactive operations and are edited into diagrammatic specifications. The diagrammatic specifications are then translated into a source program in which are interspersed comment statements, each of which indicates a diagrammatic specification corresponding to the associated statement of the source program. In the course of the test, the diagrammatic specification corresponding to a process under execution is retrieved and displayed according to a comment statement and the portions corresponding to executed operations are displayed while the resultant values of variables are also displayed. One of the limitations to this test program is that it requires modification or enhancement of the original computer program and recompilation prior to its use. Other limitations are that this tool does not provide a graphical representation of the data structures as they are stored in memory and that it requires operation of the program under test.
U.S. Pat. No. 5,034,899 to Schult illustrates a software process for automatically generating a functional diagram graphic which can be used for automatically generating functional diagrams from a control program for a stored-program control system on a graphical display device, particularly a programming device for such a control system. The functional diagrams generated have a high information density. They contain signal branchings and signal crossings and function blocks with several outputs further connected to other function blocks.
Still another tool available to programmers is illustrated in U.S. Pat. No. 4,937,740 to Agarwal et al. This tool comprises a software analysis system for acquiring, storing, and analyzing certain predetermined characteristics of a computer program and includes a method for acquiring certain lines of high-level language instruction code without the need for statistical sampling. Each line of instruction code generates at least one address in assembly language which is encoded with a tag and stored in a first-in, first-out memory. The memory output is asynchronous with its output such that tagged addresses are stored in real time but extracted from memory at a predetermined rate. This allows the system to acquire all software events of interest. Each tagged address is also marked with a time stamp so that the time between acquisition of each of the software events of interest may be analyzed to determined the length of time spent in a particular subroutine. Typically, this system is used to evaluate the frequency of computer memory accesses made and to assess the performance of the software article under evaluation. One of the limitations of this tool is that it requires execution of the program under analysis on the target host computer.
Recently issued U.S. Pat. No. 5,185,867 to Ito illustrates an information processing system for generating software specifications to facilitate software maintenance work. The method involved in this system comprises the steps of reading information described in at least one software product obtained by particularizing a high rank specification, extracting information taken over from the high rank specification to the low rank specifications out of the information thus read, dividing the extracted information into common items and items single existing and relating to the common items, putting together singly existing items for every common item, arranging respective items on the basis of the information put together for every common item in a network form, generating network information, converting representation format of each item of the network information, and generating a high rank specification.